package graphModel;

import impl.EdgeImpl;
import impl.GraphImpl;
import impl.NodeImpl;

import java.util.ArrayList;

public class GraphInterfaces {
	public interface GraphElement{
		public String id = "";
		//public boolean isEnabled();
	}
	
	public interface NodeRO extends GraphElement{
	}
	
	public interface EdgeRO extends GraphElement{
		public String getAEnd();
		public String getBEnd();
		//public boolean isDirected();
	}
	
	public interface NodePF extends NodeRO{
		public boolean isVisited();
		public void reset();
		public void setEnabled();
		public void setVisited(boolean visited);
	}
	
	public interface EdgePF extends EdgeRO{
		//public void setEnabled();
		public void setWeight(double weight);
		//public boolean isWeightCalc();
	}
	
	public interface Node extends NodePF{
		
	}
	
	public interface Edge extends EdgePF{
		
	}
	
	public interface Graph{
		public void addNode(NodeImpl noda);
		public void addEdge(String nodeA,String nodeB,double weight);
		public ArrayList<NodeImpl> getNodes();
		public ArrayList<EdgeImpl> getEdges();
		public void reset();
	}
	
	public interface Path{
		//public ArrayList<String> findIncNodes(ArrayList<EdgeImpl> list, String id_node);
		public void findPath(GraphImpl list,ArrayList<NodeImpl> nodss, NodeImpl start,NodeImpl end);
	}
	
	
	
}